home *** CD-ROM | disk | FTP | other *** search
- TITL ' TMS7041 MODEM CODE COMMAND HANDLER '
- IDT 'DCMND1'
- OPTION XREF,TUNLST
- *******----------------------------------------*******
- ***** 320 COMMAND PROCESSING CODE *****
- ***** THIS SECTION ENCODES THE INITIALIZATION *****
- ***** OF THE 320 OPERATION MODES AS FOLLOWS: *****
- ***** 0000 -- RUN BELL 212 MODE *****
- ***** 0001 -- RUN LOCAL DIGITAL LOOPBACK *****
- ***** 0010 -- RUN ANALOG LOOPBACK *****
- ***** 0011 -- INITIALIZE TO ORIGINATE MODE *****
- ***** 0100 -- INITIALIZE TO ANSWER MODE *****
- ***** 0101 -- RUN BELL 103 MODEM *****
- ***** * 0110 -- RUN V.21 MODEM *****
- ***** * 0111 -- RUN V.22 MODEM *****
- ***** 1000 -- RUN BELL 212/XMT SQUELCH *****
- ***** * 1001 -- RUN V.22BIS MODEM *****
- ***** 1100 -- RUN ANSWER MODE/W.ANSWER TONE *****
- ***** 1101 -- RUN BELL 103/XMT SQUELCH *****
- ***** * NOT YET IMPLEMENTED *****
- ***** *****
- ***** WRITTEN BY PETER EHLIG *****
- ***** *****
- ***** REVISION 1.1 12/03/85 PETER EHLIG *****
- ***** REVISION 1.2 1/15/86 RAJ CHIRAYIL *****
- ***** REVISION 1.3 1/15/86 PETER EHLIG *****
- ***** *****
- ***** COPYRIGHT TEXAS INSTRUMENTS, 07/25/86 *****
- ***** *****
- *******----------------------------------------*******
- *
- * REFERENCES AND DEFINITIONS
- DEF COMLIS,B212,RUNANS,RNANS2,RANSM
- REF PRINT,GO320,TOP,DB,TONE,INIT,B103
- *
- PAGE
- COPY DTE2.EQU
- *******----------------------------------------*******
- ***** Local Digital Loopback Test *****
- *******----------------------------------------*******
- *
- LDLB EQU $
- *
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>31,DPORT ; SET LDLB INIT COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- ILDLB BTJOP %BIT6,DPORT,ILDLB ; CHECK 320 RESPONSE
- MOVD %LDLBM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @GO320 ; RUN DSP COMM ROUTINE
- *
- PAGE
- *******----------------------------------------*******
- ***** BELL 1200 BPS MODEM ALGORITHM *****
- *******----------------------------------------*******
- *
- B212 EQU $
- ORP %BIT2,BPORT ; DE-ACTIVE FILTER CHIP ALB
- ORP %BIT0,BPORT ; ENABLE CODEC
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>30,DPORT ; SET 1200bps run command
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IB212 BTJOP %BIT6,DPORT,IB212 ; CHECK 320 RESPONSE
- MOVD %IRUNM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @GO320 ; RUN DSP COMM ROUTINE
- *
- *******----------------------------------------*******
- ***** WAIT ON MODEM CALL AND ANSWER *****
- *******----------------------------------------*******
- *
- RUNANS EQU $
- ORP %BIT1,IOCNT0 ; CLEAR ANY PREVIOUS RI
- NORING BTJZP %BIT1,IOCNT0,NORING ; WAIT FOR RING INDICATE
- RINGOF ORP %BIT1,IOCNT0 ; CLEAR EDGE LATCH
- BTJOP %BIT1,IOCNT0,RINGOF ; WAIT FOR end of ring
- RNANS2 ORP %BIT2,BPORT ; DE-ACTIVE FILTER CHIP ALB
- ORP %BIT0,BPORT ; ENABLE CODEC
- ORP %BIT7,APORT ; TAKE IT OFF HOOK
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>35,DPORT ; SET 300bps run command
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IB103A BTJOP %BIT6,DPORT,IB103A ; CHECK 320 RESPONSE
- MOVD %RANSM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- CLR MSGM ; INITIALIZE THE CARRIER
- CLR MSGL ; ABORT TIMER COUNTER
- CLR CWT1 ; TO BE ABOUT
- CLR CWT2 ; 20 MILLISECONDS
- B320 BTJOP %BIT7,DPORT,B320 ; WAIT FOR DSP RESPONSE
- MOVP %0,DDDR ; REVERSE PORT DIRECTION
- ANDP %NOT7,BPORT ; ENABLE LATCH READ
- MOVP DPORT,A ; AND READ IT
- ORP %BIT7,BPORT ; RESET ACKNOWLEDGE BIT
- AND %>3F,A ; MASK OFF UNDEFINED BITS
- CMP %>31,A ; IS THERE CARRIER DETECT
- JNZ OVCNT1 ; IF NOT THEN SKIP DELAY
- INC MSGL ; AFTER 8 READS WITH ACTIVE
- BTJO %BIT3,MSGL,GOTCD ; CARRIER, RUN MODEM
- OVCNT1 INC CWT1 ; INCREMENT 1ST STAGE
- JNC B320 ; COUNTER
- INC CWT2 ; INCREMENT 2ND STAGE
- JNC B320 ; COUNTER
- SQUEL1 ANDP %NOT7,APORT ; GO ON HOOK
- MOVP %>1C,APORT ;
- ANDP %NOT0,CPORT ; ACTIVATE CTS
- BR @TOP ; RETURN TO COMMAND HANDLER
- GOTCD EQU $
- MOVD %RUNSLA,MSGL ; ACKNOWLEDGE HOOKUP
- CALL @PRINT ; BY MESSAGE
- BR @B103 ; RUN DSP COMM ROUTINE
- *
- PAGE
- *******----------------------------------------*******
- ***** RUN ANALOG LOOPBACK TEST *****
- *******----------------------------------------*******
- IALB EQU $
- ANDP %NOT2,BPORT ; SET FILTER CHIP TO ALB
- ORP %BIT0,BPORT ; ENABLE CODEC
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>32,DPORT ; SET LALB INIT COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buf
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IALB1 BTJOP %BIT6,DPORT,IALB1 ; CHECK 320 RESPONSE
- MOVD %IALBM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @GO320 ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** INITIALIZE TO ORIGINATE MODE *****
- *******----------------------------------------*******
- IORIG EQU $
- ORP %BIT3,APORT ; SET FILTERS TO ORIGINATE
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>33,DPORT ; SET orig INIT COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buf
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IORG1 BTJOP %BIT6,DPORT,IORG1 ; CHECK 320 RESPONSE
- MOVD %IORGM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- ANDP %>C0,DPORT ; CLEAR OUT THE COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buf
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** INITIALIZE TO ANSWER MODE 300bps only *****
- *******----------------------------------------*******
- ANSMDM EQU $
- ANDP %NOT3,APORT ; SET FILTERS TO ANSWER MODE
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- MOVP %>34,DPORT ; SET answer mode command
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IANS1 BTJOP %BIT6,DPORT,IANS1 ; CHECK 320 RESPONSE
- MOVD %ANSM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- ANDP %>C0,DPORT ; CLEAR OUT THE COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- OR %BIT1,SWSTAT ; Enable AUTO ANSWER
- MOVP %03,IOCNT0 ; Enable INT1 (RI-)
- EINT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** RUN REMOTE DIGITAL LOOPBACK not tested *****
- *******----------------------------------------*******
- RDLB EQU $
- ORP %BIT0,BPORT ; ENABLE CODEC
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- ORP %>35,DPORT ; SET RDLB INIT COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- IRDL1 BTJOP %BIT6,DPORT,IRDL1 ; CHECK 320 RESPONSE
- MOVD %IRDLM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *
- *******----------------------------------------*******
- ***** STOP REMOTE DIGITAL LOOPBACK not tested *****
- *******----------------------------------------*******
- QRDLB EQU $
- ANDP %NOT0,BPORT ; DISABLE CODEC
- MOVP %>3F,DDDR ; SETUP DPORT FOR OUTPUT
- ORP %>36,DPORT ; SET LDLB INIT COMMAND
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; turn DPORT in
- QRDL1 BTJOP %BIT6,DPORT,QRDL1 ; CHECK 320 RESPONSE
- MOVD %QRDLM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *
- PAGE
- *******----------------------------------------*******
- ***** PUT LINE ON HOOK *****
- *******----------------------------------------*******
- HOOKON EQU $
- ANDP %NOT7,APORT ; PUT MODEM BACK ON HOOK
- MOVD %HONM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** TAKE LINE OFF HOOK *****
- *******----------------------------------------*******
- HOOKOF EQU $
- ORP %BIT7,APORT ; TAKE OFF HOOK
- MOVD %HOFFM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** ENABLE ESC CODE *****
- *******----------------------------------------*******
- IESC EQU $
- OR %BIT4,SWSTAT ; SET ESC ENABLE BIT
- MOVD %IESCM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** DISABLE ESC CODE *****
- *******----------------------------------------*******
- INESC EQU $
- AND %NOT4,SWSTAT ; RESET ESC ENABLE BIT
- MOVD %INESCM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** SETUP FOR 300 BPS MODEM *****
- *******----------------------------------------*******
- SMODEM EQU $
- AND %NOT7,SWSTAT ; SET SLOW MODEM BIT
- MOVD %SLMM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** SETUP FOR 1200 BPS MODEM *****
- *******----------------------------------------*******
- FMODEM EQU $
- OR %BIT7,SWSTAT ; RESET FAST MODEM BIT
- MOVD %FTMM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** RUN SYSTEM AT 1200 BPS *****
- *******----------------------------------------*******
- FAST EQU $
- MOVD %IFASTM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- MOVP %>1D,T3DATA ; LOAD BAUD COUNT AT 1200
- WFAST BTJZP %BIT1,SSTAT,WFAST ; WAIT FOR CR
- MOVP RXBUF,A ; ECHO THE CR
- MOVP A,TXBUF ; TO CLEAR BUFFERS
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** RUN SYSTEM AT 300 BPS *****
- *******----------------------------------------*******
- SLOW EQU $
- MOVD %ISLOWM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- MOVP %>74,T3DATA ; LOAD BAUD COUNT AT 300
- WSLOW BTJZP %BIT1,SSTAT,WSLOW ; WAIT FOR CR
- MOVP RXBUF,A ; ECHO THE CR
- MOVP A,TXBUF ; TO CLEAR BUFFERS
- BR @TOP ; EXIT ROUTINE
- *******----------------------------------------*******
- ***** DISPLAY HELP LIST *****
- *******----------------------------------------*******
- HELP EQU $
- MOVD %HELPM,MSGL ; GET CONFIRMATION MESG
- CALL @PRINT ; AND SEND IT
- BR @TOP ; EXIT ROUTINE
- *
- PAGE
- *******----------------------------------------*******
- ***** command address table *****
- *******----------------------------------------*******
- COMLIS BYTE 'A',0
- DATA ANSMDM ; INITIALIZE TO ANSWER
- BYTE 'B',0
- DATA IESC ; ENABLE ESC CODE
- BYTE 'C',0
- DATA INESC ; DISABLE ESC CODE
- BYTE 'D',0
- DATA TONE ; RUN THE 320 TONE DIALER
- * DATA DB ; dial command
- BYTE 'F',0
- DATA FAST ; SWITCH TO 1200 BPS
- BYTE 'G',0
- DATA RUNANS ; RUN MODEM IN ANSWER
- BYTE 'H',0
- DATA HELP ; HELP LIST
- BYTE 'J',0
- DATA HOOKON ; TAKE LINE ON HOOK
- BYTE 'K',0
- DATA HOOKOF ; TAKE LINE OFF HOOK
- BYTE 'L',0
- DATA LDLB ; LOCAL DIGITAL LOOP BACK
- BYTE 'M',0
- DATA IALB ; RUN ALB MODE
- BYTE 'N',0
- DATA RDLB ; RUN 320 AS REMOTE DLB
- BYTE 'O',0
- DATA IORIG ; INITIALIZE TO ORIGINATE
- BYTE 'Q',0
- DATA QRDLB ; QUIT REMOTE DIGITAL LOOP
- BYTE 'R',0
- DATA B212 ; RUN MODEM ROUTINE
- BYTE 'S',0
- DATA SLOW ; SWITCH TO 300 BPS
- BYTE 'T',0
- DATA TONE ; RUN THE 320 TONE DIALER
- BYTE 'U',0
- DATA SMODEM ; SWITCH TO 300 BPS MODEM
- BYTE 'V',0
- DATA FMODEM ; SWITCH TO 1200 BPS MODEM
- BYTE 'Z',0
- DATA INIT ; reset command
- *
- PAGE
- *******----------------------------------------*******
- ***** screen messages - text statements *****
- *******----------------------------------------*******
- LDLBM TEXT 'EXECUTE LDLB, ENTER CHARACTERS'
- BYTE 0
- *
- IALBM TEXT 'RUN ANALOG LOOPBACK TEST'
- BYTE 0
- *
- IRUNM TEXT 'RUN MODEM'
- BYTE 0
- *
- IORGM TEXT 'INITIALIZE 320 FOR ORIGINATE MODE'
- BYTE 0
- *
- ANSM TEXT 'INITIALIZE 320 TO ANSWER MODE'
- BYTE 0
- *
- RANSM TEXT 'RUN MODEM IN ANSWER MODE'
- BYTE 0
- *
- RUNSLA TEXT 'ANSWER MODEM LINKED AT 300BPS'
- BYTE 0
- *
- IRDLM TEXT 'RUN REMOTE DIGITAL LOOPBACK'
- BYTE 0
- *
- INESCM TEXT 'DISABLE ESCAPE CODE'
- BYTE 0
- *
- IESCM TEXT 'ENABLE ESCAPE CODE'
- BYTE 0
- *
- ISLOWM TEXT 'RUN AT 300 BPS, SWITCH TERMINAL AND (CR)'
- BYTE 0
- *
- IFASTM TEXT 'RUN AT 1200 BPS, SWITCH TERMINAL AND (CR)'
- BYTE 0
- *
- QRDLM TEXT 'STOP REMOTE DIGITAL LOOPBACK'
- BYTE 0
- *
- HONM TEXT 'PUT LINE ON HOOK'
- BYTE 0
- *
- HOFFM TEXT 'TAKE LINE OFF HOOK'
- BYTE 0
- *
- SLMM TEXT 'SETUP FOR 300BPS MODEM'
- BYTE 0
- *
- FTMM TEXT 'SETUP FOR 1200BPS MODEM'
- BYTE 0
- *
- * HELP LIST
- HELPM TEXT 'TABLE OF COMMANDS'
- BYTE >0D,>0A
- TEXT 'A ==> PUT MODEM IN ANSWER MODE'
- BYTE >0D,>0A
- TEXT 'B ==> ENABLE ESC CODE'
- BYTE >0D,>0A
- TEXT 'C ==> DISABLE ESC CODE'
- BYTE >0D,>0A
- TEXT 'D ==> DIAL FOLLOWING DIGITS'
- BYTE >0D,>0A
- TEXT 'F ==> RUN SYSTEM AT 1200 BPS'
- BYTE >0D,>0A
- TEXT 'G ==> WAIT ON MODEM CALL AND ANSWER'
- BYTE >0D,>0A
- TEXT 'H ==> DISPLAY HELP LIST'
- BYTE >0D,>0A
- TEXT 'J ==> PUT LINE ON HOOK'
- BYTE >0D,>0A
- TEXT 'K ==> TAKE LINE OFF HOOK'
- BYTE >0D,>0A
- TEXT 'L ==> RUN DIGITAL LOOP BACK TEST'
- BYTE >0D,>0A
- TEXT 'M ==> RUN ANALOG LOOP BACK TEST'
- BYTE >0D,>0A
- TEXT 'N ==> RUN REMOTE DIGITAL LOOPBACK'
- BYTE >0D,>0A
- TEXT 'O ==> PUT MODEM IN ORIGINATE MODE'
- BYTE >0D,>0A
- TEXT 'Q ==> STOP REMOTE DIGITAL LOOPBACK'
- BYTE >0D,>0A
- TEXT 'R ==> RUN THE 320 MODEM'
- BYTE >0D,>0A
- TEXT 'S ==> RUN MODEM AT 300 BPS'
- BYTE >0D,>0A
- TEXT 'T ==> TONE DIAL USING THE 320'
- BYTE >0D,>0A
- TEXT 'U ==> SETUP FOR 300BPS MODEM'
- BYTE >0D,>0A
- TEXT 'V ==> SETUP FOR 1200BPS MODEM'
- BYTE >0D,>0A
- TEXT 'Z ==> RESET THE 7742'
- BYTE >0D,>0A
- BYTE 0
- *
- END